2020年十大开源漏洞回顾
WhiteSource 公司基于 NVD、安全公告和开源项目问题追踪工具等回顾了2020年出现的十大开源漏洞。如下:
1、Lodash
CVE-2020-8203:CVSS 评分:7.4,高危,受影响版本:4.17.2之前版本
易受攻击的 Lodash 版本在使用 _.zipObjectDeep 时,存在一个原型污染漏洞。HackerOne 发布的原始报告指出,该漏洞可被用于在 Object.prototype 中注入属性,从而导致敏感信息暴露、数据增加或修改或者拒绝服务。该报告提供了复现步骤:
通过 lodash 的 “zipObjectDeep” 函数构建一个对象:
Lodash 是一个 JavaScript 工具库,文档指出,Lodash 通过简化和数组、数字、对象、字符串等的工作,使得 JavaScript 更易于处理。这也是为何很多开发人员喜欢用这个开源库迭代数组、对象和字符串;操纵和测试值;以及创建复合函数的原因所在。
2、FasterXML jackson-databind
CVE-2020-24616:CVSS评分8.1,高危,影响 2.9.10.6 之前的 2.x 版本
易受攻击的 FasterXML Jackson-databind 错误地处理了和 br.com.anteros.dbcp.AnterosDBCPDataSource (即 Anteros-DBCP)之间存在关系的序列化小工具和键入之间的交互。
序列化是Java 开发人员的常见实践。多年来,Java 序列化框架和库中都出现了很多序列化问题。因 JSON 库而闻名的一名开源开发人员 @cowtowncoder 指出,“序列化小工具”的负面作用是能够执行恶意操作,造成远程代码执行、拒绝服务或敏感数据泄露等攻击。虽然这种 exploit 类型可能会造成实际后果,但该开发员表示这些攻击不易执行且要求具备很多前提条件。
多年来,得益于它翻译流行数据交换转换器 JSON 和 Java 的方式,jackson-databind 都是人们的最爱,是开发人员运行 API 的必选。如果你也是 Java 开发,请务必保证 Jackson-databind 是最新版本。
3、HtmLUnit
CVE-2020-5529:CVSS 8.1分,高危,影响2.37.0之前的版本
易受攻击的 HtmlUnit 中存在代码执行问题。从NVD 中可看到,当 HtmlUnit 不正确地初始化 Rhino 引擎时,恶意 JavaScript 代码可在应用程序中执行任意 Java 代码。当被嵌入安卓应用程序中时,由于对 Rhino 引擎的初始化未正确执行,恶意 JavaScript 代码可在应用上执行任意 Java 代码。
从文档可知,HtmlUnit 是 “Java 程序的 GUI-Less 浏览器”,同时支持 JavaScript 和 AJAX 库。它为 HTML 文档建模,并提供 API 供用户调用页面、填写表单、单击链接等。该开源项目通常用于测试或从网站检索信息。
4、Handlebars
CVE-2019-20920,CVSS 评分8.1,高危,影响3.0.8之前的版本以及4.5.3之前的 4.x 版本。
NPM 安全公告指出,易受攻击的 Handlebars 中存在一个任意代码执行问题。该安全公告解释称,该包的 lookup 助手未正确验证模板,使得恶意人员能够提交在系统中执行任意 JavaScript 的模板。该漏洞可用于在服务器处理 Handlebars 模板中或者在受害者浏览器中运行任意代码。该漏洞之前漏洞的修复方案不完整导致的。
Handlebars 是 Mustache 模板语言的一个扩展,是一种“无逻辑的模板语言,使查看和代码分离“更容易。目前从 npm 每周的下载超过700万次,它是一个极其热门的开源项目,由认真负责的社区支持和维护。
5、http-proxy
CVE 编号尚未分配:影响1.18.1之前的版本
某些 http-proxy 版本易受拒绝服务攻击。主体部分较长的HTTP 请求能够触发 ERR_HTTP_HEADERS_SENT 未被处理的异常,从而使代理服务器崩溃。只有当代理服务器通过使用 proxyReq.setHeader 函数在代理请求中设置标头时,才会发生这种情况。
Http-proxy 是一种 HTTP 可编程代理库,支持 websocket 并有助于实现多个组件如反向代理和负载平衡器之类的组件。它是一个非常受欢迎的开源库,目前每周的 NPM 下载量接近1200万,而且支持2000多个依赖。鉴于此,用户有必要确保使用的是最新版本 1.18.1。
6、decompress
CVE-2020-12265,CVSS 评分9.8,严重,影响 4.2.1 以前的版本
NPM 安全公告指出,受影响的 decompress 版本易受任意文件写入漏洞影响。恶意人员可通过包含含有 ../ 的文件名称写入任意文件夹,因为该软件包不会通过相对路径阻止文件提取。
Decompress 是一个致力于轻松提取文档的开源项目。它说明了相对小型项目中的漏洞,很多人通过它执行简单的任务,如果漏洞未得到修复可为用户造成巨大损害。Decompress 等项目让编程更容易,但虽然它们执行的任务看似简单,但不能因此忽视对开源漏洞的管理工作。
安全公告建议更新至版本 4.2.1 或后续版本。
7、XStream
CVE-2020-26217,CVSS评分8.8,高危,影响1.4.14之前版本
易受攻击的 XStream 中存在一个远程代码执行漏洞。XStream 解释称,“在解组时处理的流包括重构之前写入对象的类型信息。因此,XStream 基于这些类型信息创建新的实例。攻击者能够操纵处理后的输入流,并替换或注入可以执行任意 shell 命令的对象。“
GitHub 安全公告建议依赖 XStream 的用户将安全框架的默认黑名单更新到 1.4.14 或后续版本。遵循建议通过白名单设置 XStream 的 Security Framework 的用户不受影响。
XStream 是一个开源库,执行从 Java 到 XML 的序列化,然后再返回。文档列出了传输、持久性、配置和单元测试的典型用法。由于它是许多开源 Java Web 应用程序所使用的非常流行的库,因此确保正在使用最新版本并遵循建议非常重要。
8、Netty
CVE-2020-11612,CVSS 评分9.8,影响 4.1.46 之前的 4.1.x 版本。
ZlibDecoders 易受攻击的 Netty 版本在解码 ZlibEncoded 字节流时,可导致无限制的内存分配。恶意人员可利用该漏洞向 Netty 服务器发送较大的 ZlibEncoded 字节流,从而迫使服务器将所有可用内存分配给单个解码器。
Netty 是一个异步事件驱动的网络应用程序框架,旨在快速开发可维护的高性能协议服务器和客户端。该项目的文档指出,此 NIO 客户端/服务器框架有助于简化和梳理 TCP 和 UDP 套接字服务器等网络编程。
9、Spring Framework
CVE-2020-5398,CVSS 评分7.5,影响版本包括:5.2.3之前的 5.2.x 版本、5.1.13 之前的 5.1.x 版本以及5.0.16之前的5.0.x版本。
在受影响的 Spring Framework 版本中,当应用程序在响应(文件名称属性是由用户提供的衍生输入)中设置 “Content-Disposition” 标头时,应用程序易受反射型文件下载 (RFD) 攻击的影响。
如果你正在使用 Java,很可能会遇到 Spring。它是极其流行的 Java 应用开发框架,得益于其模块化和轻量的特点,可使开发人员轻松创建出强大的应用程序。众所周知,它颠覆了控制设计原理(结合了分层、轻量级容器以及可在接口上编程的能力)。
10、PyYAML
CVE-2020-1747,CVSS 评分9.8,影响 5.3.1 之前的版本。
当不受信任的 YAML 文件通过 full_load 方法或通过 FullLoader 负载器处理时,易受攻击的 PyYAML 库易受任意代码执行漏洞的影响。攻击者可利用该漏洞通过滥用 python/object/new 构建器在系统上滥用任意代码。
PyYAML 是一款极其流行的针对 Python 的 YAML 解析器和发射器。由于近年来 Python 的热度高居不下,因此用户最好确保使用的是 PyYAML 的更新版本。
集结30+漏洞 exploit,Gitpaste-12 蠕虫影响 Linux 和开源组件等
4个开源 TCP/IP 栈被曝33个漏洞,数百万智能和工业设备受影响
https://resources.whitesourcesoftware.com/blog-whitesource/top-security-open-source-vulnerabilities-2020
题图:Pixabay License
本文由奇安信代码卫士编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。
奇安信代码卫士 (codesafe)
国内首个专注于软件开发安全的
产品线。